import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

# 用来正常显示中文标签
plt.rcParams['font.sans-serif'] = ['SimHei']
stu1 = pd.read_excel('./doc/六年级上学期第一次月考成绩单_202109.xlsx' ,dtype={'班级':str})
stu2 = pd.read_excel('./doc/六年级上学期第二次月考成绩单_202112.xlsx' ,dtype={'班级':str})
stu3 = pd.read_excel('./doc/六年级上学期期末考试成绩单_202201.xlsx' ,dtype={'班级':str})
stu4 = pd.read_excel('./doc/初一年级下学期期中考试成绩单_202205.xlsx' ,dtype={'班级':str})
stu = pd.concat([stu1,stu2,stu3,stu4],axis=0).reset_index(drop=True)

#while(True):
stu_name=input('请输入学生的姓名（q 退出）：')
#stu_name = '杨凯淞'
# if(stu_name == 'q'):
#     break
# else:
#print(stu.head())
name = stu.loc[stu['姓名'] == stu_name].reset_index(drop=True)
#print(name)
#用matplotlib来绘图
#1、建立坐标轴,指定颜色
# plt.bar(name['考试时间'], name['生物'],color='yellow')
# #2、x轴坐标数据说明横向改为纵向
# plt.xticks(name['考试时间'],rotation= '90')
# #3、对x轴，y轴以及图标标题进行定义
# plt.xlabel('考试时间')
# plt.ylabel('成绩')
# plt.title('柱状图',fontsize = 22)
# #x轴数据被截断了，看不全
#name = name.set_index('考试时间')
#普通折线图，只有折线
name.plot(y= ['生物','班级平均分','年级平均分'])
#面积图，区域被覆盖
#name.plot.area(y= ['生物','班级平均分','年级平均分'])
stu_class=name['班级'][0]
stu_title = '6年级'+stu_class+'班'+'.'+stu_name+'的成绩曲线'

#print(stu_class)
plt.title(stu_title, fontsize=16, fontweight='bold')
#原图刻度太粗糙，用索引值平铺x轴刻度
plt.xticks(name.index,fontsize=8)

plt.ylim(0,100,5)

#axes(即轴域对象)
ax = plt.gca()
#set_xticklabels 坐标轴刻度
#rotation=45  旋转45度
#ha='right' 水平，右侧对齐
#有了下面3行代码就可以吧tight_layout（）注释掉了
ax.set_xticklabels(name['考试时间'],rotation=45,ha='right')
#当前的图表
f = plt.gcf()
f.subplots_adjust(left=0.2,bottom=0.42)

#plt.tight_layout() #采用紧凑型布局
plt.show()  
